*==========================================================================================================================================================
*
*	Local Projections
*
*==========================================================================================================================================================


set more off

qui {


*-------------------------------------------------------------------------------------------------------------
*	SETTINGS
*-------------------------------------------------------------------------------------------------------------

* Variables
local vars "gdp_r_adj cpi_sil log_R_esp_er_hp itsN wage_sil " 
local lava ""Real output" "Consumer prices" "Lending rate" "Money growth rate" "Nominal wage"" 
local yti ""Percent" "Percent" "Percentage pts" "Percentage pts" "Percent"" 

* irf horizon
local H 5
local F 5

* lags
local L 2
local LS `L'

*-------------------------------------------------------------------------------------------------------------

local count = 0
foreach v of local vars {
local count = `count'+1
n di "Variable `v'"

*_________ GET DATA ____________
use "`path'data/working files/prepared.dta", clear 


*_________ DEFAULT TABLE ____________
preserve
gen default_year = year if defaults==1
gen disaster_year = year if disaster_org==1
replace disaster_year = l.disaster_year if disaster_year==.
gen dist = default_year - disaster_year 
order year default_year disaster_year dist
keep if defaults==1

gen id = _n
keep default_year disaster_year dist
mkmat default_year disaster_year dist, mat(tab)
mat tabt = tab'
mat list tabt
svmat tabt, names(date_col)
keep date_col*
drop if _n>3

describe
gen star = "$^{*}$"
forvalues x=1/`r(k)' {
	gen ddist = date_col`x' if _n==3
	egen ddistt = min(ddist)
	drop ddist
	if (ddistt<=5){
		egen dist_st = concat(date_col`x' star) if  date_col`x'<= 5, punct("")
		}
	else {
		egen dist_st = concat(date_col`x') if  date_col`x'> 5, punct("")
		}
	tostring date_col`x', replace
	replace date_col`x' = dist_st if _n==3
	drop dist_st ddistt
	}
drop star
gen names = ""
replace names = "Debt crisis year" if _n==1
replace names = "Nearest disaster year" if _n==2
replace names = "Distance (in years)" if _n==3

describe
local tablecols " "
forvalues x=1/`r(k)' {
	local tablecols = subinstr("`tablecols'"," ","r ",.)
	}


snapshot save, label("before")
keep if _n<=2
listtab names date_col*  using "results/TableA2.tex", replace ///
headlines( \begin{tabular}{l `tablecols'} \\ \hline \hline ) ///
footlines(\hline) ///
delimiter( & ) ///
end(" \\ " ) ///


snapshot restore 1
keep if _n==3
listtab names date_col*,  appendto("results/TableA2.tex") ///
headlines("") ///
footlines(\hline \hline \end{tabular}) ///
delimiter( & ) ///
end(" \\  " ) ///

restore


	
*____ DECLARE TIME SERIES _____
gen id =1
tsset id year, yearly

gen def = default
forvalues k = 1/5 {
	replace def = 1 if f.def==1
	}

gen perclossN_def = perclossN*def
gen percloss_salvN_def = percloss_salvN*def
gen percloss_pirN_def = percloss_pirN*def


*_________________ LOCAL PROJECTIONS _________________

***_________ CONTROLS

local indep	" gdp_r_adj_gr cpi_sil_gr wage_sil_gr itsN_gr" 

forvalues i=0/`L'{
	local indep_`i' = subinstr("`indep'"," "," l`i'_",.)
	}
	
local rhs ""
forvalues i = 1/`L'{
	local rhs "`rhs'`indep_`i''"
	}
	
	local not l0_`v'_gr l0_itsN_gr 
	local rhs: list rhs- not	
	


	***_________ IMPULSE RESPONSE and CONFIDENCE INTERVAL variables
	gen irf_`v' = . if _n<=`H'+1
	
	gen se_`v' = . if _n<=`H'+1

	gen ci_up_`v' = . if _n<=`H'+1
	gen ci_lo_`v' = . if _n<=`H'+1
	gen ci_up90_`v' = . if _n<=`H'+1
	gen ci_lo90_`v' = . if _n<=`H'+1
				
	gen irf_`v'_def = . if _n<=`H'+1

	
	
	***_________ ESTIMATE COEFFICIENTS
	
	forvalues y = 0/`H' {
		n display "projection `y'"

		newey `v'_gr`y' l(1/`LS').`v'_gr l(-`F'/`LS').perclossN_vellon l(-`F'/`LS').perclossN `rhs' l(-`F'/`LS').percloss_salvN l(-`F'/`LS').percloss_pirN l(0/`LS').temperature l(0/`LS').warbeu l(0/`LS').warbciv, lag(5) force 
		
		* store IMPULSE RESPONSES and STANDARD ERRORS
		lincom perclossN 
		replace irf_`v' = r(estimate) if _n==`y'+1 /* coefficients */
		replace se_`v' = r(se) if _n==`y'+1 /* standard errors */

		newey `v'_gr`y' l(1/`LS').`v'_gr l(-`F'/`LS').default l(-`F'/`LS').perclossN_def l(-`F'/`LS').perclossN_vellon l(-`F'/`LS').perclossN `rhs' l(-`F'/`LS').percloss_salvN l(-`F'/`LS').percloss_pirN l(0/`LS').temperature l(0/`LS').warbeu l(0/`LS').warbciv, lag(5) force
		
		lincom perclossN
		replace irf_`v'_def = r(estimate) if _n==`y'+1 /* coefficients */
		
		}			


	***_________ CONFIDENCE INTERVALS
	replace ci_up_`v' = irf_`v' + 1*se_`v' if _n <= `H'+1
	replace ci_lo_`v' = irf_`v' - 1*se_`v' if _n <= `H'+1
	replace ci_up90_`v' = irf_`v' + 1.64*se_`v' if _n <= `H'+1
	replace ci_lo90_`v' = irf_`v' - 1.64*se_`v' if _n <= `H'+1

* plot prerequisites
gen time = _n-1 if(_n<=`H'+1) 
drop if time > `H'
keep time irf_* ci_up_* ci_lo_* ci_up90_* ci_lo90_* se_*
order irf_* ci_up_* ci_lo_* time ci_up90_* ci_lo90_*
drop if time == .
gen zero = 0 if time!=.

local title : word `count' of `lava'
local ytitle : word `count' of `yti'
local lsize "medium"
local tsize "medium"

twoway  (rarea ci_lo90_`v' ci_up90_`v' time, fcolor(gs15) lcolor(gs15)) ///
		(rarea ci_lo_`v' ci_up_`v' time, fcolor(gs12) lcolor(gs12)) ///
		(line irf_`v' time, lcolor(black) lpattern(solid) lwidth(medthick)) ///
		(line irf_`v'_def time, lcolor(red) lpattern(longdash) lwidth(medthick)) ///
		(line zero time, lcolor(black) lwidth(medium)), title("") xtitle("Year", size(`lsize')) ytitle(`ytitle', height(2) size(`lsize')) xlabel(,labsize(`lsize')) ylabel(, format(%9.1f) nogrid angle(0) labsize(`lsize')) ///
		legend(off) title(`title', size(`tsize')) ///
		graphregion(color(white)) plotregion(color(white)) name(g`count', replace) nodraw
	
} // vars


graph combine g4 g1 g3 g2 g5, name(lp_presi, replace) cols(3) imargin(medsmall) plotregion(color(white)) graphregion(color(white)) 
graph display lp_presi, ysize(4) xsize(6)
graph export "results/FigureA5.pdf", replace 	
}


*_________________________________________

			
